home *** CD-ROM | disk | FTP | other *** search
-
- PROCEDURE Compare ( First, Second : ARRAY OF CHAR ) : CompareResults;
-
- VAR
- SizeFirst, SizeSecond, SearchSize : CARDINAL;
- Index : CARDINAL;
- FirstBigger : BOOLEAN;
-
- BEGIN
- SizeFirst := Length ( First );
- SizeSecond := Length ( Second );
- FirstBigger := (SizeFirst >= SizeSecond);
-
- (* If you can hack these boundary conditions *)
- (* better than this brute force method, *)
- (* try it! I would like to see it! *)
- IF SizeFirst = 0 THEN
- IF FirstBigger THEN
- RETURN Equal
- ELSE
- RETURN Less
- END
- ELSIF SizeSecond = 0 THEN
- RETURN Greater
- END;
-
- IF FirstBigger THEN
- SearchSize := SizeSecond;
- ELSE
- SearchSize := SizeFirst;
- END;
-
- Index := 0;
-
- WHILE ( Index < SearchSize ) DO
- IF First[Index] = Second[Index] THEN
- INC (Index);
- ELSIF First[Index] > Second[Index] THEN
- RETURN Greater;
- ELSE RETURN Less;
- END; (* IF *)
- END;
-
- (*
- * At this point, Index = SearchSize and both strings are equal up
- * to Index-1. The longer string must be greater.
- *)
- IF ( SizeFirst ) > ( Index ) THEN
- RETURN Greater;
- ELSIF (SizeSecond ) > ( Index ) THEN
- RETURN Less;
- ELSE
- RETURN Equal;
- END;
-
- END Compare;
-
-
-